package com.neouton.crm.executiceManager.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.neouton.common.entity.ActivitiVO;
import com.neouton.crm.entity.SysUserEntity;
import com.neouton.crm.executiceManager.entity.ManagerContractInfoVO;
import com.neouton.crm.pm.entity.BackMoneyPlanVo;
import com.neouton.crm.pm.entity.ContractInfoVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface ManagerContractMapper {

    /**
     * 分页查询合同列表
     *
     * @param page
     * @param entity
     * @return
     */
    IPage<ManagerContractInfoVO> queryContractsByPage(@Param("page") IPage page,
                                                      @Param("vo") ManagerContractInfoVO entity,
                                                      @Param("userList") List<SysUserEntity> userList);

    /**
     * 保存合同信息
     * @param contractInfo
     * @return
     */
    Boolean saveContractInfo(@Param("contractInfo") ManagerContractInfoVO contractInfo);

    /**
     * 更新合同信息
     * @param contractInfo
     * @return
     */
    Boolean updateContractInfo(@Param("contractInfo")ManagerContractInfoVO contractInfo);

    /**
     * 备份合同信息
     * @param contractId
     * @param backUserId
     * @return
     */
    Boolean backUpContractInfo(@Param("contractId")Integer contractId,@Param("backUserId")Integer backUserId);

    /**
     * 更具主键获取项目信息
     * @param approvalId 审批主键
     * @return
     */
    ManagerContractInfoVO queryContractInfoByapprovalId(Integer approvalId);

    /**
     * 更具主键获取合同历史数据
     * @param approvalId 审批主键
     * @return
     */
    ManagerContractInfoVO queryContractInfoHistoryByApprovalId(Integer approvalId);

    /**
     * 更具主键获取合同信息
     * @param ContractId
     * @return
     */
    ManagerContractInfoVO queryContractInfoById(@Param("contractId")Integer ContractId);


    /**
     * 查询全部合同信息
     *
     * @param page
     * @param entity
     * @return
     */
    List<ManagerContractInfoVO> queryAllContractInfos(@Param("vo") ManagerContractInfoVO entity,
                                               @Param("userList") List<SysUserEntity> userList);

    /**
     * 获取当日最大合同单号
     * @return
     */
    Integer getContractMaxNumByDate();

    Boolean deleteContractInfoById(Integer contractId);

    /**
     * 分页查询
     *
     * @param page
     * @param entity
     * @return
     */
    IPage<ManagerContractInfoVO> queryApprovalContractByPage(@Param("page") IPage page,
                                                      @Param("vo") ManagerContractInfoVO entity,
                                                      @Param("activitis") List<ActivitiVO> activitiVOS);

    /**
     * 分页查询
     *
     * @param page
     * @param entity
     * @return
     */
    IPage<ManagerContractInfoVO> queryApprovalContractDoneByPage(@Param("page") IPage page,
                                                          @Param("vo") ManagerContractInfoVO entity);

    /**
     * 分页查询
     *
     * @param page
     * @param entity
     * @return
     */
    IPage<ManagerContractInfoVO> queryApprovalContractRecordByPage(@Param("page") IPage page,
                                                            @Param("vo") ManagerContractInfoVO entity,
                                                            @Param("userList") List<SysUserEntity> userList);

    /**
     * 保存人事回款记录
     * @param backMoneyPlanList
     */
    void saveBackMoneyPlan(List<BackMoneyPlanVo> backMoneyPlanList);
}
